The worldwide network of computers commonly known as the "Internet" has seen explosive growth in the last several years. This growth has been typically fueled by the introduction and widespread use of "web" browsers that allow for simple graphical user interface-based access to network servers. Such network servers typically support documents formatted as "web pages." The "World Wide Web" (WWW) is a collection of servers on the Internet that utilize the Hypertext Transfer Protocol (HTTP). HTTP is a known application protocol that provides users access to files using a standard page description language referred to as Hypertext Markup Language (HTML). It should be noted that the files may be provides in different formats, such as text, graphics, images, sound and video, among others. HTML provides basic document formatting and allows the developer to specify "links" to other servers and files. Use of an HTML-compliant client browser involves specification of a link via a Uniform Resource Locator (URL). Upon specification of a URL, a client may make a TCP/IP request to the server identified in the link and receive a "web page" in return, where the "web page" is a document formatted according to HTML.
The increased use and evolution of functions available via the world wide web has been driven by the browsers used to access the web. For instance, browsers are currently being developed to add features and increase a rate at which information is transferred to satisfy the needs of the computer industry. However, such browsers are often unable to keep pace with the needs of all users. In these situations, the browser users may implement either "helper applications" or "plug-ins" to extend the capabilities of the browser.
Helper applications are utilized by the browser to perform specific tasks not supported by the browser. For example, if a user downloads a piece of shareware from the Internet, the browser will enable the user to download the file, but will not decompress or install the shareware. Rather, helper applications perform the decompression and installation operations. In contrast, "plug-ins" are files that are used to enhance the functionality of the browser. Stated another way, a plug-in gives a browser the capability to do an operation that it could not perform before the addition thereof. A plug-in may also be used by including a resource to be processed by the plug-in within the code of an HTML document. This process is referred to as "embedding".
Plug-ins have performed a wide variety of functions. For example, a plug-in referred to as PointCast.TM. provides new and weather information that is collected offline to a user's web browser. Additionally, in a plug-in from Maclntosh.TM. computers, a Talker plug-in may be used to enable the user's web browser to a "speak" when Apple's Speech Manager is also installed. Additionally, Maclntosh.TM. allow the use of two additional plug-ins that will accept voice commands for the user's web browser. A first plug-in is referred to as ShockTalk and a second plug-in is referred to as ListenUp. The ListenUp plug-in listens for a phrase identified in an HTML document. Upon recognizing the phrase, the user's browser is linked to an associated URL. ShockTalk is more interactive and may be used to recognize phrases specified in movies. It should be noted that other types of plug-ins may also be utilized.
In addition to browsers, other applications are often extended using similar techniques. For example, applications provided by multi-modal access providers have also been required to extend the capabilities of certain applications. Examples of multi-modal access procedures include voice navigation, speech output, and alternative keyboard input such as switches. During development, multi-modal access providers must often develop their own macro language, compiled profiling environment, or other tool to programmatically extend the capabilities of the target application. Furthermore, in many applications, the macro language, compiled profiling environment, or other tool developed by the multi-modal access provider is usable only with a particular release of the target application. Thus, solutions to extend the capabilities of an application in a multi-modal environment are often limited to a certain macro language and to a certain release schedule of the target application.
Furthermore, specific user-interface programming languages, such as IBM's Profile Access Language (PAL) that is used with IBM's Screen Reader product, have limited capabilities and do not have access to functions that could be used to augment the target application beyond those intended by the programming language. For example, when a user makes an addition to a database, the user may want to enhance the target application to "speak" to indicate the completion and the update of the database in response to the transaction. However, such responsiveness is not currently available as the programming language would not be able to decipher and then process the additional data inserted in the database.
Additionally, applications not written in the native language prohibit application extenders from using unique features of the language in which the target application was written. This is particularly important in powerful object oriented languages like Java. The Java programming language allows for an external application to perform "introspection" on another application's objects. Introspection allows an application to iterate an object's methods and its signatures to then call the application's methods even though such methods and signatures are not built into an application.
Lastly, features such as plug-ins require the "plug-in" to be built for a specific application. The same plug-in could not be used to extend another application for the same purpose. For example, if a shareware mail program launching a Quick-Time.TM. viewer plug-in for URL text found in a mail message, it would not support launching the same viewer for Quick-Time.TM. URL text found in a displayed Lotus Notes.TM. database.
Therefore, a need exists for a means to programmatically extend application capabilities independent of the application. The extension should be built from the native application environment, while still running in a management environment.